
异步执行Redis命令
我正在尝试使用以下代码执行Redis的几种异步方法var redis = require("redis");var client = redis.createClient();var async = require("asyncjs"); async.list([ client.hincrby("traffic:" + siteId, 'x', 1), client.hincrby("traffic:" + siteId, 'y', 1), client.hin...
2024-01-10
redis HLL误报过多
Hyperlog日志是一种概率算法,根据redis HLL文档,我们可以获得0.81%的错误,但我却得到17-20%的错误我认为出了点问题..这是我简单的perl测试脚本。有什么错误吗#!/usr/bin/perl -w ...
2024-01-10
Redis dbsize命令的准确性
dbsizeRedis中命令的准确性如何?我注意到,返回的键dbsize数与keys命令返回的实际键数不匹配。这是一个例子:redis-cli dbsize(integer) 3057redis-cli keys "*" | wc -l2072为什么dbsize键数比实际数字高得多?回答:我想说这与密钥到期有关。键/值存储(例如Redis或memcached)无法为每个要过期的对象定义物理计...
2024-01-10
Azure Redis缓存授权标头
我正在研究Azure Redis缓存,并且我正在使用REST API来创建缓存。我得到的回应是:Azure Redis缓存授权标头HTTP/1.1 401 Unauthorized { "error": { "code": "AuthenticationFailed", "message": "Authentication failed. The 'Authorization' header is missing." } } 我在文档中找不到任何Authorization h...
2024-01-10
Redis的set命令是原子操作吗?
我正在尝试使用Redis的set命令来实现最简单的分布式锁组件,但是我无法通过官方文档找到有关原子性的确切依据,Redis的SET key value[EX seconds] [PX milliseconds] [NX|XX]命令是否是原子操作?回答:是。其核心是单线程的,因此 没有 将运行,直到SET完成; 这使得SET {key} {value} EX {expiry}NX非常适合简单的锁定。...
2024-01-10
Redis INCRBY有限制
我想知道是否有一种方法可以通过我的应用程序进行一次往返操作来在Redis中执行此操作:对于给定的键K,其可能的值V是范围内的任何整数[A, B]。基本上,它具有上下边界。当发出INCRBYor DECRBY命令时(例如INCRBY key 10), 当结果值没有超出范围 执行。我需要这个操作是原子的,并且我想知道是否有...
2024-01-10
Redis Lua脚本不起作用
我创建了一个redis lua脚本来执行基于关键数据类型的命令:local keyType = redis.call("TYPE", KEYS[1])if (keyType == "string")thenreturn redis.call("GET",KEYS[1])elsereturn nilend每次执行时,它都会返回null。请帮助纠正脚本。回答:对响应的redis.call返回形式如下表:({"ok": "string"}如果类型为字符串,则返回)因此,为...
2024-01-10
执行redis eval命令以在nodeJS中运行Lua脚本
在Redis中,我通过CLI运行Lua脚本,如下所示:-$ redis-cli --eval debug_script.lua key1 key2 key3 key4 , arg1 arg2因此,我的Lua脚本接受4个键和2个参数。现在,我想在Node.js中运行相同的脚本。我正在使用此库在我的应用程序中导入Redis。我没有找到任何有关redisClient.eval(...)执行Lua脚本的函数参数的示例。因此,我...
2024-01-10
Redis Pop列表项,按项数
我有一个分布式系统,在一个地方,我在Redis列表中插入大约10000个项目,然后调用我的多个应用程序钩子来处理项目。我需要的是具有一些项目的ListLeftPop类型的方法。它应该从redis列表中删除项目并返回到我的调用应用程序。我正在使用Stackexchange.Resis.extension我目前用于获取(不弹出)的方法是 publi...
2024-01-10
Redis RDB文件大小不断增长
我的redis rdb文件的大小一直在增长,直到数据库无法运行并且连接被拒绝为止。我意识到这与某些配置设置有关-我使用的是默认配置文件。有什么办法可以防止这种情况?我不必担心持续备份。回答:这显然在redis.conf中,# Note: you can disable saving at all commenting all the "save" lines.## It is also possible to r...
2024-01-10
Redis对Hget和HSet命令的基准测试
我找不到带redis的HGET,HSET(哈希表命令)基准标记的示例。任何示例或资源都将对此有用。回答:我只是意识到redis-benchmark命令没有基准hSet和hGet命令。(我正在使用v2.8.5)您可以做的是编写一个小程序来对性能进行基准测试:<?php$redis = new Redis();$redis->pconnect("127.0.0.1");$count = 10000;$start_t = microti...
2024-01-10
Redis Pubsub和消息队列
我的总体问题是: 使用Redis for PubSub,当发布者将消息推送到频道中的速度比订阅者能够阅读它们的速度快时,消息会如何处理?例如,假设我有:一个简单的发布者以2 msg / sec的速度发布消息。 一个简单的订户以1 msg / sec的速率读取消息。我天真的假设是订户只会看到发布到Redis上的消息的50%。...
2024-01-10
如何在Redis中执行命令而完全没有任何响应?
我尝试在redis上执行命令,但不关心任何响应,甚至都不希望使网络流量最小化。一个答案说,不返回任何内容的Lua脚本可以帮助实现这一目标,但是当我在redis-cli上尝试并嗅探我的包时,无论是否有,我仍然得到相同数量的客户端和服务器之间传输的包。一个不返回任何内容或返回一个整数1的脚本。...
2024-01-10
如何连接到Azure Redis缓存的从属实例
Azure Redis Cache 的 标准 和 高级 定价层提供主/从复制:标准-由Microsoft管理的具有高可用性SLA的两节点主/辅助配置中的复制缓存。但是Azure门户仅为单个Redis实例提供连接详细信息(主机名,端口,密钥)。有没有一种方法可以连接到副本中的从属进程?回答:由于AzureRedis服务代表您管理复制和自动...
2024-01-10
Redis BITSET和WATCH
我正在使用Redis创建一种算法来声明某个范围内未使用的整数。此解决方案使用BITPOS和BITSET,并且为了避免出现竞争情况,我也使用WATCH/ MULTI/EXEC。为了测试并发方面,我创建了一个bash脚本,该脚本同时尝试并行查找10个空闲数字,以调查EXEC命令的可能结果。我发现EXEC即使从另一个客户端修改了监视...
2024-01-10
如何禁用Redis RDB和AOF?
如何完全禁用RDB和AOF?我不在乎持久性,只希望它存在于内存中。我已经注释掉了:#save 900 1#save 300 10#save 60 10000但这并没有帮助,我发现Redis仍尝试写入磁盘。我知道Redis希望写入磁盘,因为出现以下错误:“无法打开.rdb进行保存:权限被拒绝”我不在乎该错误,因为我想完全禁用持久性。回答...
2024-01-10
将Redis用作REST API的中间缓存
我们有一个iOS应用,可通过RESTAPI与Django服务器通信。大多数数据由相当大的Item对象组成,这些对象包含一些渲染成单个平面词典的相关模型,并且该数据很少更改。我们发现,查询这对于Postgres来说不是问题,但是生成JSON响应需要花费大量时间。另一方面,每个用户的项目集合也有所不同。我想到...
2024-01-10
Redis可以通过管道传递依赖于先前命令的多个命令吗?
我对Redis还是很陌生,仍然在玩它。我想测试一下它是否与我的项目相关,但是我不确定正在运行的特定命令。SO的用户让我确信使用管道和事务的性能优势,所以我想问一下如何做到这一点。基本上,我有两个要发布的语句,而不必等待结果(似乎是管道衬砌的一个很好的候选者。它看起来像这样:D...
2024-01-10
如何在Redis中进行“ GROUP BY”
我试图找到一种解决方案,如何从HASH具有相同值的中获取所有字段。例如redis > HSET my_hash "foo" 1(integer) 1redis > HSET my_hash "bar" 1(integer) 1redis > HSET my_hash "baz" 0(integer) 1redis > HGETALL my_hash1) "foo"2) "1"3) "bar"4) "1"5) "baz"6) "0"所以,我要的是做这样的事情HGETALL my_hash "WHERE VAL...
2024-01-10
redis命令(例如ZADD或HMGET)可以处理的参数数量是否有限制?
我想使用单个ZADD或HMGET命令而不是MULTI / EXEC。ZADD可以处理的(分数,成员)元组数量是否有限制?HMGET可以处理的字段数有限制吗?回答:理论上的限制很高,但是您应该以无法达到的方式设计阅读。保持读取大小合理的主要原因是避免阻塞服务器太长时间。数百或数千应该是一个不错的选择,但...
2024-01-10
PHP Timer等待30秒,然后运行命令
我只是在寻找一个简单的计时器,可以让我的页面在30秒后运行脚本。这个想法是用户有30秒的时间提交答案,否则页面将运行脚本并将其带到“对不起,太慢”的样式页面。我无法为此找到正确的php函数,但是基本上我们像这样:<?phpStart timer(30);when timer runs out:header("location: tooslow.php");?>感谢您...
2024-01-10
命令超时| Discord.js
目前我有这样的:命令超时| Discord.jsconst Discord = require("discord.js"); const PREFIX = ","; const token = "my token"; var bot = new Discord.Client(); bot.on('ready',() => { bot.on('message', message => { if (!message.content.startsWith(PREFIX)) return; //i...
2024-01-10
Redis中的命名空间?
是否可以在Redis中创建名称空间?从我发现的结果来看,所有全局命令(计数,全部删除)都适用于所有对象。有没有一种创建子空间的方法,以便这些命令在上下文中受到限制?我不想为此设置不同的Redis服务器。我认为答案是“否”,并且想知道为什么没有实现它,因为它似乎是一个有用的功能,...
2024-01-10
Redis流水线执行顺序
我正在使用rub redis宝石。想知道我是否例如:redis.pipelined do REDIS.del("users:#{current_user_id}:i-unread") REDIS.lpush("users:#{current_user_id}:i-read", items) REDIS.ltrim("users:#{current_user_id}:i-read", 0, Interaction::MAX_INTERACTIONS)end这样的执行顺序得到保证吗?回答:当然...
2024-01-10
Redis跨槽错误
我试图在Redis上一次插入多个键/值(有些值是集合,有些是散列),但出现此错误:ERR CROSSSLOT Keys in request don'thash to the same slot。我不是redis-cli从某些需要将多个键/值写入Redis集群的Go代码中执行此操作。我看到代码中的其他地方以这种方式完成了多个键值,但我不明白为什么我的那个不起作用。没有...
2024-01-10
名称长度会影响Redis的性能吗?
例如,我喜欢在Redis中使用冗长的名称set-allBooksBelongToUser:$userId。这样可以吗?还是会影响性能?回答:您正在谈论使用的密钥并没有那么长。您提供的示例键用于一个集合,集合查找方法为O(1)。集合(SDIFF,SUNION,SINTER)上更复杂的操作是O(N)。可能的是,$userId与使用较长的键相比,填充是更...
2024-01-10
Redis-默认阻止VM
阻塞VM的整体性能更好,因为同步,线程生成和恢复等待值的阻塞客户端都不会浪费时间。因此,如果您愿意不时接受更高的延迟,则阻塞VM是一个不错的选择。尤其是如果交换很少发生并且大多数经常访问的数据恰好适合您的内存。这是Redis的默认模式(这是唯一的前进模式,我相信现在2.6中已弃用V...
2024-01-10
redis雪崩和穿透的解决方法
redis穿透指当用户查询的key在redis中不存在,对应的id在数据库也不存在,此时被非法用户进行攻击,大量的请求会直接打在db上,造成宕机,从而影响整个系统。解决方法:把空的数据也缓存起来,比如空字符串,空对象,空数组或list。redis雪崩是指缓存中的数据大批量失效,然后这个使用又要大量的请求进来,但是由于redis中的key全部失效了所有会全部请求到db上,造成宕机。解决方法:设置对...
2024-01-22
从Redis获取多个键值
我目前正在与Redis一起玩,我有几个问题。是否可以从键数组中获取值?例:users:1:name "daniel"users:1:age "24"users:2:name "user2"users:2:age "24"events:1:attendees "users:1", "users:2"当我redis.get events:1:attendees返回时"users:1","users:2"。我可以遍历此列表并获得用户:1,获得用户:2。但这感觉不对,有没有办法让所...
2024-01-10
多个Redis实例
大多数人似乎建议在不同的端口(6379和6380)上运行单独的Redis实例。为什么在创建第二个数据库时更通常建议这样做?我还没有完全阅读文档,但是大多数示例在连接时并未真正提及“选择Redis数据库”。Ruby客户端的一个示例,nrk/ predis的自述文件:$redis = new Predis\Client(array( 'scheme' => 'tcp', 'host' ...
2024-01-10
关闭Redis
今天,我第一次在本地计算机上启动Redis,然后在关闭Rails应用程序后关闭了所有终端窗口。一个小时后,我再次启动Rails应用程序,并执行以下操作来启动Redis服务器redis-server /usr/local/etc/redis.conf但是,它告诉我# Opening port 6379: bind: Address already in use因此,即使关闭了Mac上的终端窗口,我也认为它仍...
2024-01-10
多核CPU上的Redis性能
我正在寻找Redis,以便为我提供一个中间高速缓存存储,其中包含有关交集和并集之类的集合操作的大量计算信息。我查看了redis网站,发现redis不是为多核CPU设计的。我的问题是,为什么会这样呢?另外,如果是,我们如何在多核CPU上使用Redis来100%利用CPU资源。回答:这是设计决定。Redis是带有...
2024-01-10
Redis:实现加权有向图
我们将主要在图上搜索最短路径(可能使用Dijkstra算法)目前我们考虑将边缘添加到Redis对于每个节点,我们将使用nodeId作为键,并使用引用节点的键的sortedset,sortedSet中每个nodeId的分数就是边缘的权重。你怎么看?如果我错了,请纠正我,但这里唯一的遗憾是,对于sortedset中的下一个节点的每个查...
2024-01-10
